<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database tables serialization</span> benchmarks run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize each entire table from the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a> (3202 records) 1 Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>460508</td><th>4.08x</th><td>19927</td><td>81110</td><td>101037</td><td>101037</td><th>4.73x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>344645</td><th>3.06x</th><td>45820</td><td>156667</td><td>202487</td><td>202487</td><th>9.47x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>334213</td><th>2.96x</th><td>217081</td><td>6324573</td><td>6541654</td><td>6541654</td><th>305.97x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>118407</td><th>1.05x</th><td>70235</td><td>32041</td><td>102276</td><td>102276</td><th>4.78x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>346173</td><th>3.07x</th><td>58241</td><td>306366</td><td>364607</td><td>364607</td><th>17.05x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>112762</td><th>1x</th><td>8411</td><td>12969</td><td>21380</td><td>21380</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>247146</td><th>2.19x</th><td>23001</td><td>22597</td><td>45598</td><td>45598</td><th>2.13x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>289323</td><th>2.57x</th><td>16847</td><td>42681</td><td>59528</td><td>59528</td><th>2.78x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>1232</td><th>3.23x</th><td>1117</td><td>325</td><td>1442</td><td>1442</td><th>7.25x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>672</td><th>1.76x</th><td>224</td><td>621</td><td>845</td><td>845</td><th>4.25x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>790</td><th>2.07x</th><td>582</td><td>1141</td><td>1723</td><td>1723</td><th>8.66x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1127</td><th>2.96x</th><td>608</td><td>590</td><td>1198</td><td>1198</td><th>6.02x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>790</td><th>2.07x</th><td>172</td><td>830</td><td>1002</td><td>1002</td><th>5.04x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>381</td><th>1x</th><td>99</td><td>144</td><td>243</td><td>243</td><th>1.22x</th></tr><tr class='best-time'><th class='c1'>ServiceStack TypeSerializer</th><td>598</td><th>1.57x</th><td>83</td><td>116</td><td>199</td><td>199</td><th>1x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>622</td><th>1.63x</th><td>78</td><td>222</td><td>300</td><td>300</td><th>1.51x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>32721</td><th>2.62x</th><td>1548</td><td>7328</td><td>8876</td><td>8876</td><th>4.38x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>23869</td><th>1.91x</th><td>1815</td><td>8615</td><td>10430</td><td>10430</td><th>5.15x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>25264</td><th>2.02x</th><td>14589</td><td>27041</td><td>41630</td><td>41630</td><th>20.54x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>16132</td><th>1.29x</th><td>4831</td><td>2954</td><td>7785</td><td>7785</td><th>3.84x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>25229</td><th>2.02x</th><td>2543</td><td>5334</td><td>7877</td><td>7877</td><th>3.89x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>12492</td><th>1x</th><td>1069</td><td>958</td><td>2027</td><td>2027</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>19140</td><th>1.53x</th><td>894</td><td>1307</td><td>2201</td><td>2201</td><th>1.09x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>20928</td><th>1.68x</th><td>1509</td><td>2217</td><td>3726</td><td>3726</td><th>1.84x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>7437</td><th>1.89x</th><td>365</td><td>884</td><td>1249</td><td>1249</td><th>3.18x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>6160</td><th>1.57x</th><td>598</td><td>1945</td><td>2543</td><td>2543</td><th>6.47x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>6211</td><th>1.58x</th><td>2521</td><td>5822</td><td>8343</td><td>8343</td><th>21.23x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>5247</td><th>1.34x</th><td>1633</td><td>914</td><td>2547</td><td>2547</td><th>6.48x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>6241</td><th>1.59x</th><td>609</td><td>1671</td><td>2280</td><td>2280</td><th>5.80x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>3930</td><th>1x</th><td>190</td><td>203</td><td>393</td><td>393</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>5187</td><th>1.32x</th><td>345</td><td>494</td><td>839</td><td>839</td><th>2.13x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>5709</td><th>1.45x</th><td>279</td><td>718</td><td>997</td><td>997</td><th>2.54x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>5236</td><th>0x</th><td>235</td><td>735</td><td>970</td><td>970</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1912</td><th>0x</th><td>371</td><td>1196</td><td>1567</td><td>1567</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>2647</td><th>0x</th><td>2489</td><td>3063</td><td>5552</td><td>5552</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1969</td><th>0x</th><td>989</td><td>859</td><td>1848</td><td>1848</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2647</td><th>0x</th><td>608</td><td>1204</td><td>1812</td><td>1812</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>980</td><th>0x</th><td>185</td><td>-1</td><td>184</td><td>184</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2157</td><th>0x</th><td>201</td><td>245</td><td>446</td><td>446</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1716</td><th>0x</th><td>164</td><td>380</td><td>544</td><td>544</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>331678</td><th>0x</th><td>16874</td><td>64711</td><td>81585</td><td>81585</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>165567</td><th>0x</th><td>27456</td><td>105328</td><td>132784</td><td>132784</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>199864</td><th>0x</th><td>208252</td><td>483219</td><td>691471</td><td>691471</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>78378</td><th>0x</th><td>36463</td><td>30304</td><td>66767</td><td>66767</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>204384</td><th>0x</th><td>92466</td><td>127110</td><td>219576</td><td>219576</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>60253</td><th>0x</th><td>9464</td><td>-1</td><td>9463</td><td>9463</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>169694</td><th>0x</th><td>22919</td><td>20527</td><td>43446</td><td>43446</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>127182</td><th>0x</th><td>8856</td><td>-1</td><td>8855</td><td>8855</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>400652</td><th>4.64x</th><td>15872</td><td>69474</td><td>85346</td><td>85346</td><th>4.88x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>302174</td><th>3.50x</th><td>41701</td><td>140559</td><td>182260</td><td>182260</td><th>10.41x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>290143</td><th>3.36x</th><td>191971</td><td>6276011</td><td>6467982</td><td>6467982</td><th>369.51x</th></tr><tr class='best-size'><th class='c1'>Microsoft BinaryFormatter</th><td>86323</td><th>1x</th><td>59924</td><td>24546</td><td>84470</td><td>84470</td><th>4.83x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>302158</td><th>3.50x</th><td>53079</td><td>294589</td><td>347668</td><td>347668</td><th>19.86x</th></tr><tr class='best-time'><th class='c1'>ProtoBuf.net</th><td>90569</td><th>1.05x</th><td>6468</td><td>11036</td><td>17504</td><td>17504</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>212942</td><th>2.47x</th><td>21005</td><td>19743</td><td>40748</td><td>40748</td><th>2.33x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>252061</td><th>2.92x</th><td>14230</td><td>38027</td><td>52257</td><td>52257</td><th>2.99x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>25851</td><th>0x</th><td>1001</td><td>3871</td><td>4872</td><td>4872</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>15365</td><th>0x</th><td>1543</td><td>6993</td><td>8536</td><td>8536</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>15410</td><th>0x</th><td>11058</td><td>25055</td><td>36113</td><td>36113</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6819</td><th>0x</th><td>2671</td><td>2336</td><td>5007</td><td>5007</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>15449</td><th>0x</th><td>2257</td><td>7251</td><td>9508</td><td>9508</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>4044</td><th>0x</th><td>374</td><td>-1</td><td>373</td><td>373</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>13517</td><th>0x</th><td>831</td><td>1259</td><td>2090</td><td>2090</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>11103</td><th>0x</th><td>596</td><td>-1</td><td>595</td><td>595</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>485</td><th>0x</th><td>131</td><td>209</td><td>340</td><td>340</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>159</td><th>0x</th><td>193</td><td>296</td><td>489</td><td>489</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>159</td><th>0x</th><td>315</td><td>571</td><td>886</td><td>886</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>628</td><th>0x</th><td>679</td><td>558</td><td>1237</td><td>1237</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>159</td><th>0x</th><td>151</td><td>302</td><td>453</td><td>453</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>54</td><th>0x</th><td>91</td><td>-1</td><td>90</td><td>90</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>135</td><th>0x</th><td>100</td><td>200</td><td>300</td><td>300</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>143</td><th>0x</th><td>78</td><td>161</td><td>239</td><td>239</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>486</td><th>4.42x</th><td>147</td><td>222</td><td>369</td><td>369</td><th>2.22x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>198</td><th>1.8x</th><td>191</td><td>307</td><td>498</td><td>498</td><th>3x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>198</td><th>1.8x</th><td>305</td><td>606</td><td>911</td><td>911</td><th>5.49x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>700</td><th>6.36x</th><td>584</td><td>569</td><td>1153</td><td>1153</td><th>6.95x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>198</td><th>1.8x</th><td>154</td><td>277</td><td>431</td><td>431</td><th>2.60x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>110</td><th>1x</th><td>86</td><td>84</td><td>170</td><td>170</td><th>1.02x</th></tr><tr class='best-time'><th class='c1'>ServiceStack TypeSerializer</th><td>168</td><th>1.53x</th><td>89</td><td>77</td><td>166</td><td>166</td><th>1x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>180</td><th>1.64x</th><td>78</td><td>148</td><td>226</td><td>226</td><th>1.36x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>11521</td><th>2.79x</th><td>557</td><td>1897</td><td>2454</td><td>2454</td><th>3.66x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>8253</td><th>2.00x</th><td>782</td><td>2890</td><td>3672</td><td>3672</td><th>5.47x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>8288</td><th>2.00x</th><td>4485</td><td>8292</td><td>12777</td><td>12777</td><th>19.04x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6032</td><th>1.46x</th><td>1496</td><td>1339</td><td>2835</td><td>2835</td><th>4.23x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>8238</td><th>1.99x</th><td>966</td><td>2209</td><td>3175</td><td>3175</td><th>4.73x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>4135</td><th>1x</th><td>323</td><td>348</td><td>671</td><td>671</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>6322</td><th>1.53x</th><td>379</td><td>570</td><td>949</td><td>949</td><th>1.41x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>6822</td><th>1.65x</th><td>414</td><td>830</td><td>1244</td><td>1244</td><th>1.85x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>6459</td><th>5.64x</th><td>321</td><td>980</td><td>1301</td><td>1301</td><th>3.50x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>3319</td><th>2.90x</th><td>509</td><td>1730</td><td>2239</td><td>2239</td><th>6.02x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>3319</td><th>2.90x</th><td>2628</td><td>5660</td><td>8288</td><td>8288</td><th>22.28x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>2846</td><th>2.49x</th><td>1159</td><td>1129</td><td>2288</td><td>2288</td><th>6.15x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>3319</td><th>2.90x</th><td>718</td><td>1456</td><td>2174</td><td>2174</td><th>5.84x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>1145</td><th>1x</th><td>176</td><td>196</td><td>372</td><td>372</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2789</td><th>2.44x</th><td>206</td><td>290</td><td>496</td><td>496</td><th>1.33x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>3001</td><th>2.62x</th><td>259</td><td>519</td><td>778</td><td>778</td><th>2.09x</th></tr>
</tbody>
</table>
</body>
</html>

